import { get, post, put, del } from '~/utils/request';
import type {
  IPaginationResponse,
  IDept,
  IDeptTree,
  ICreateDept,
  IUpdateDept,
  IQueryDept
} from '@nbase/shared';

/**
 * 部门信息
 */
export type Dept = IDept;

/**
 * 部门树
 */
export type DeptTree = IDeptTree;

/**
 * 创建部门请求参数
 */
export type CreateDeptDto = ICreateDept;

/**
 * 更新部门请求参数
 */
export type UpdateDeptDto = IUpdateDept;

/**
 * 查询部门请求参数
 */
export type QueryDeptDto = IQueryDept;

/**
 * 部门服务
 */
export const deptService = {
  /**
   * 获取部门列表
   */
  getList(params?: QueryDeptDto): Promise<IPaginationResponse<Dept>> {
    return get('/system/dept', { params });
  },

  /**
   * 获取部门树
   */
  getTree(): Promise<DeptTree[]> {
    return get('/system/dept/tree');
  },

  /**
   * 获取所有部门（不分页）
   */
  getAll(): Promise<Dept[]> {
    return get('/system/dept');
  },

  /**
   * 获取部门详情
   */
  getById(id: string): Promise<Dept> {
    return get(`/system/dept/${id}`);
  },

  /**
   * 创建部门
   */
  create(data: CreateDeptDto): Promise<Dept> {
    return post('/system/dept', data);
  },

  /**
   * 更新部门
   */
  update(id: string, data: UpdateDeptDto): Promise<Dept> {
    return put(`/system/dept/${id}`, data);
  },

  /**
   * 删除部门
   */
  delete(id: string): Promise<{ message: string }> {
    return del(`/system/dept/${id}`);
  },
};

